package com.thaiopensource.relaxng.pattern;

import com.thaiopensource.xml.util.Name;
import com.thaiopensource.xml.util.WellKnownNamespaces;

class AttributeNameClassChecker implements NameClassVisitor
{
  private String errorMessageId = null;

  public void visitChoice (final NameClass nc1, final NameClass nc2)
  {
    nc1.accept (this);
    nc2.accept (this);
  }

  public void visitNsName (final String ns)
  {
    if (ns.equals (WellKnownNamespaces.XMLNS))
      errorMessageId = "xmlns_uri_attribute";
  }

  public void visitNsNameExcept (final String ns, final NameClass nc)
  {
    visitNsName (ns);
    nc.accept (this);
  }

  public void visitAnyName ()
  {}

  public void visitAnyNameExcept (final NameClass nc)
  {
    nc.accept (this);
  }

  public void visitName (final Name name)
  {
    visitNsName (name.getNamespaceUri ());
    if (name.equals (new Name ("", "xmlns")))
      errorMessageId = "xmlns_attribute";
  }

  public void visitNull ()
  {}

  public void visitError ()
  {}

  String checkNameClass (final NameClass nc)
  {
    errorMessageId = null;
    nc.accept (this);
    return errorMessageId;
  }
}
